home *** CD-ROM | disk | FTP | other *** search
/ Game Cracker (Expanded Edition) / Game Cracker (Expanded Edition).iso / cracks / SV_CGLAD.ZIP / Cyber Gladiators.txt < prev    next >
Encoding:
Text File  |  1998-05-05  |  8.3 KB  |  188 lines

  1.  
  2. Free Information Xchange '98 presents:
  3.  
  4. Cyber Gladiators - CD check crack by Static Vengeance
  5.  
  6. Requirements
  7. Hex editor and full install
  8. W32Dasm if you want to follow along
  9.  
  10.     Okay, first off.... YES I know it's very old as far as games go!  However a couple of
  11. things come to mind when I chose to do this one.  First, I haven't seen a crack for it anyways,
  12. second it supports my 3Dfx card through Direct3D and lastly it has a CD check.  This way I can
  13. present yet another CD cracking tutorial.  So run W32Dasm and disassemble cyber.exe.  When W32Dasm
  14. has finished disassembling the executable, go up to the title bar and select "Refs" from the menu
  15. and drop down to "String data references" from there grab the slider bar and scroll down to the
  16. string "Please put the CyberGladiators" which is part of the string that tells you to 'Please
  17. put the CyberGladiators CD in the CD drive.'  Double click that string and you're right in the
  18. middle of this routine:
  19.  
  20. * Referenced by a CALL at Address:
  21. |:00406F25   
  22. |
  23. :004053E5 55                      push ebp
  24. :004053E6 8BEC                    mov ebp, esp
  25.  
  26. * Reference To: USER32.GetDesktopWindow, Ord:0000h
  27.                                   |
  28. :004053E8 E89D180400              Call 00446C8A
  29. :004053ED 50                      push eax
  30.  
  31. * Reference To: USER32.GetDC, Ord:0000h
  32.                                   |
  33. :004053EE E89D180400              Call 00446C90
  34. :004053F3 EB21                    jmp 00405416
  35.  
  36. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  37. |:0040541D(C)
  38. |
  39. * Possible StringData Ref from Data Obj ->"Please put the CyberGladiators "  <-- The string that gets us
  40.                                         ->"CD in the CD drive."              <-- motivated to crack it!
  41.                                   |
  42. :004053F5 B834764400              mov eax, 00447634
  43. :004053FA 6A01                    push 00000001
  44.  
  45. * Possible StringData Ref from Data Obj ->"CyberGladiators"
  46.                                   |
  47. :004053FC 6868764400              push 00447668
  48. :00405401 50                      push eax
  49. :00405402 6A00                    push 00000000
  50.  
  51. * Reference To: USER32.MessageBoxA, Ord:0000h
  52.                                   |
  53. :00405404 E863180400              Call 00446C6C
  54. :00405409 83F802                  cmp eax, 00000002
  55. :0040540C 7508                    jne 00405416
  56. :0040540E 6A01                    push 00000001
  57. :00405410 E86B080400              call 00445C80
  58. :00405415 59                      pop ecx
  59.  
  60. * Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
  61. |:004053F3(U), :0040540C(C)
  62. |
  63. :00405416 E84FFFFFFF              call 0040536A    <-- Checks for actual CD
  64. :0040541B 85C0                    test eax, eax    <-- Test for the outcome
  65. :0040541D 74D6                    je 004053F5      <-- Zero is fail and prints "Insert CD..."
  66. :0040541F 5D                      pop ebp
  67. :00405420 C3                      ret              <-- Anything else and we just return
  68.  
  69.     For information we'll look at the routine that checks for the CD.  This routine
  70. will give you a few other things to search for should a program not use a pop up window
  71. to ask for the CD.  An example of such a program would be Moto Racer and Time Warrior.
  72. Each uses a graphics screen to ask for the CD.  However the CD checking routine can be
  73. found by looking for things like:
  74.  
  75. * Referenced by a CALL at Address:
  76. |:00405416   
  77. |
  78. :0040536A 55                      push ebp
  79. :0040536B 8BEC                    mov ebp, esp
  80. :0040536D 81C460FFFFFF            add esp, FFFFFF60
  81. :00405373 53                      push ebx
  82. :00405374 33DB                    xor ebx, ebx
  83.  
  84. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  85. |:0040539D(C)
  86. |
  87. :00405376 8D4341                  lea eax, dword ptr [ebx+41]
  88. :00405379 50                      push eax
  89.  
  90. * Possible StringData Ref from Data Obj ->"%c:\"              <--  Strings "c:\" or "a:\"
  91.                                   |
  92. :0040537A 6829764400              push 00447629
  93. :0040537F 8D55B0                  lea edx, dword ptr [ebp-50]
  94. :00405382 52                      push edx
  95. :00405383 E890D10300              call 00442518
  96. :00405388 83C40C                  add esp, 0000000C
  97. :0040538B 8D4DB0                  lea ecx, dword ptr [ebp-50]
  98. :0040538E 51                      push ecx
  99.  
  100. * Reference To: KERNEL32.GetDriveTypeA, Ord:0000h           <-- A text string search for "GetDriveTypeA"
  101.                                   |                         <-- can put you in the middle of CD check
  102. :0040538F E882170400              Call 00446B16             <-- routines.
  103. :00405394 83F805                  cmp eax, 00000005         <-- 05 is value for CD-ROM drive
  104. :00405397 7406                    je 0040539F
  105. :00405399 43                      inc ebx
  106. :0040539A 83FB1A                  cmp ebx, 0000001A
  107. :0040539D 7CD7                    jl 00405376
  108.  
  109. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  110. |:00405397(C)
  111. |
  112. :0040539F 33DB                    xor ebx, ebx
  113. :004053A1 6A00                    push 00000000
  114. :004053A3 6A00                    push 00000000
  115. :004053A5 6A00                    push 00000000
  116. :004053A7 6A00                    push 00000000
  117. :004053A9 6A00                    push 00000000
  118. :004053AB 6A50                    push 00000050
  119. :004053AD 8D8560FFFFFF            lea eax, dword ptr [ebp+FFFFFF60]
  120. :004053B3 50                      push eax
  121. :004053B4 8D55B0                  lea edx, dword ptr [ebp-50]
  122. :004053B7 52                      push edx
  123.  
  124. * Reference To: KERNEL32.GetVolumeInformationA, Ord:0000h     <-- Another text string would be
  125.                                   |                           <-- "GetVolumeInformationA"
  126. :004053B8 E89B170400              Call 00446B58
  127. :004053BD 85C0                    test eax, eax
  128. :004053BF 741D                    je 004053DE
  129.  
  130. * Possible StringData Ref from Data Obj ->"CYBER"             <-- Searching for the volume name
  131.                                   |                           <-- of the original CD often works
  132. :004053C1 682E764400              push 0044762E
  133. :004053C6 8D8D60FFFFFF            lea ecx, dword ptr [ebp+FFFFFF60]
  134. :004053CC 51                      push ecx
  135. :004053CD E826950300              call 0043E8F8
  136. :004053D2 83C408                  add esp, 00000008
  137. :004053D5 85C0                    test eax, eax
  138. :004053D7 7505                    jne 004053DE
  139. :004053D9 BB01000000              mov ebx, 00000001
  140.  
  141. * Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
  142. |:004053BF(C), :004053D7(C)
  143. |
  144. :004053DE 8BC3                    mov eax, ebx
  145. :004053E0 5B                      pop ebx
  146. :004053E1 8BE5                    mov esp, ebp
  147. :004053E3 5D                      pop ebp
  148. :004053E4 C3                      ret
  149.  
  150.     That should give you a few ideas of other things that will lead you to the CD
  151. checking routine.  Back to the task at hand, from the first section of code you see
  152. the routine is called from 00406F25.  So we need to list some code around that area
  153. and see what's going on there:
  154.  
  155.   -- Program Code --
  156.  
  157. * Reference To: USER32.SetFocus, Ord:0000h
  158.                                   |
  159. :00406F19 E836FD0300              Call 00446C54
  160. :00406F1E 33C0                    xor eax, eax
  161. :00406F20 E90A040000              jmp 0040732F
  162.  
  163. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  164. |:00406F08(C)
  165. |
  166. :00406F25 E8BBE4FFFF              call 004053E5          <-- Do the CD check
  167. :00406F2A B801000000              mov eax, 00000001
  168. :00406F2F E894DDFFFF              call 00404CC8
  169.  
  170.   -- More Program Code --
  171.  
  172.     The simplest thing to do at this point is to NOP the call to the CD check and
  173. test it to see if Cyber Gladiators is cracked.  Well after you make the patch and run
  174. the program you find out that you have indeed just cracked the game.  Now if you copy
  175. the SPLASH.AVI and SPLASH4.AVI to the same directory as you have installed the game
  176. and the exe file (cyber.exe).  You now have a completly functional copy without the
  177. need for the original CD to be in your CD-Rom drive.  The actual edit would be:
  178.  
  179. Edit Cyber.exe at offset 25,893
  180. ===============================
  181. Search for: E8 BB E4 FF FF
  182. Change to : 90 90 90 90 90
  183.  
  184.     That's it for this one.. it's old but it's another example of how to remove a
  185. CD check from a Win95 game.  Cyber GLadiators has just been FiX'ed
  186.  
  187. Static Vengeance
  188.